package com.xuxin.nantai.network;

import com.xuxin.nantai.bean.AllAreaBean;
import com.xuxin.nantai.bean.BaseBean;
import com.xuxin.nantai.bean.ChaiBean;
import com.xuxin.nantai.bean.ColorBean;
import com.xuxin.nantai.bean.CompleteBean;
import com.xuxin.nantai.bean.CompleteDetailBean;
import com.xuxin.nantai.bean.DefaultGroupBean;
import com.xuxin.nantai.bean.DefectBean;
import com.xuxin.nantai.bean.FlowLineBean;
import com.xuxin.nantai.bean.FlowingCodeBean;
import com.xuxin.nantai.bean.GroupBean;
import com.xuxin.nantai.bean.HangBean;
import com.xuxin.nantai.bean.HangUpdateLoginBean;
import com.xuxin.nantai.bean.InspectorBean;
import com.xuxin.nantai.bean.LoginBean;
import com.xuxin.nantai.bean.PackBean;
import com.xuxin.nantai.bean.PackInfoBean;
import com.xuxin.nantai.bean.ProducerBean;
import com.xuxin.nantai.bean.ProductInfoBean;
import com.xuxin.nantai.bean.SelectBean;
import com.xuxin.nantai.bean.SelectDefectBean;
import com.xuxin.nantai.bean.SelectDetailBean;
import com.xuxin.nantai.bean.SelectFlowingBean;
import com.xuxin.nantai.bean.SelectInspectorBean;

import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;

/**
 * Created by xu_xin
 * Created on 2020.06.05
 */
public interface RetrofitApi {
    //修改密码
    @FormUrlEncoded
    @POST("/QAHandler.ashx?opType=changePassword")
    Observable<BaseBean> updatePassword(@Field("loginName") String ProductInfo,
                                        @Field("oldPassword") String InspectorInfo,
                                        @Field("newPassword") String PageIndex);

    //南泰质检登录
    @FormUrlEncoded
    @POST("/QAHandler.ashx?opType=QALogin")
    Observable<LoginBean> login(@Field("loginName") String user,
                                @Field("Password") String password);

    /**
     * 缝制全检 ************************************************************************************
     */

    //缝制全检
    @GET("/QAHandler.ashx?opType=getSewFullHead")
    Observable<CompleteBean> getComplete(@Query("LoginName") String LoginName,
                                         @Query("ProductInfo") String ProductInfo,
                                         @Query("InspectorInfo") String InspectorInfo,
                                         @Query("PageIndex") int PageIndex,
                                         @Query("PageCount") int PageCount);

    //根据流转单号获取流转单信息
    @GET("/QAHandler.ashx?opType=getInfoByFlowingCode")
    Observable<FlowingCodeBean> getFlowingCode(@Query("FlowingCode") String FlowingCode);

    //删除缝制全检表头
    @FormUrlEncoded
    @POST("/QAHandler.ashx?opType=deleteSewFullHead")
    Observable<BaseBean> delete(@Field("LoginName") String LoginName,
                                @Field("UserName") String UserName,
                                @Field("Guid") String Guid);

    //缝制全检明细
    @GET("/QAHandler.ashx?opType=getSewFullDetail")
    Observable<CompleteDetailBean> getCompleteDetail(@Query("ID") String ID);

    //删除缝制全检明细
    @FormUrlEncoded
    @POST("/QAHandler.ashx?opType=deleteSewFullDetail")
    Observable<BaseBean> deletes(@Field("LoginName") String LoginName,
                                 @Field("UserName") String UserName,
                                 @Field("Guid") String Guid);

    //保存缝制全检表头
    @FormUrlEncoded
    @POST("/QAHandler.ashx?opType=saveSewFullHead")
    Observable<BaseBean> update(@Field("LoginName") String LoginName,
                                @Field("UserName") String UserName,
                                @Field("Guid") String Guid,
                                @Field("ID") String ID,
                                @Field("cInvCode") String cInvCode,
                                @Field("cInvName") String cInvName,
                                @Field("PackQty") String PackQty,
                                @Field("ComNum") String ComNum,
                                @Field("CheckNum") String CheckNum,
                                @Field("InspectorCode") String InspectorCode,
                                @Field("InspectorName") String InspectorName,
                                @Field("InspectTime") String InspectTime,
                                @Field("FacArea") String FacArea,
                                @Field("TeamType") String TeamType,
                                @Field("IsReCheck") int IsReCheck,
                                @Field("FlowingCode") String FlowingCode,
                                @Field("GroupName") String GroupName,
                                @Field("GroupCode") String GroupCode);

    //根据当前登录人代码获取与当前登录人同组的检验员(切换单检、组检时使用，新增时默认为组检)
    @GET("/QAHandler.ashx?opType=getInspectorByGroup")
    Observable<InspectorBean> getInspector(@Query("loginName") String loginName,
                                           @Query("TeamType") String TeamType);

    //获取所有生产组别
    @GET("/QAHandler.ashx?opType=getAllGroupInfo")
    Observable<GroupBean> getGroups();

    //获取流水线
    @GET("/QAHandler.ashx?opType=getFlowLine")
    Observable<FlowLineBean> getFlowLine();

    //根据生产组别获取生产人员
    @GET("/QAHandler.ashx?opType=getProducerByGroup")
    Observable<ProducerBean> getProducer(@Query("cDepCode") String cDepCode,
                                         @Query("LineName") String LineName);

    //根据InsType获取疵点
    @GET("/QAHandler.ashx?opType=getAllInsDefect")
    Observable<DefectBean> getDefect(@Query("Guid") String Guid,
                                     @Query("InsType") String InsType);

    //保存缝制全检明细信息
    @FormUrlEncoded
    @POST("/QAHandler.ashx?opType=saveSewFullDetail")
    Observable<BaseBean> update(@Field("LoginName") String LoginName,
                                @Field("UserName") String UserName,
                                @Field("Guid") String Guid,
                                @Field("DID") String DID,
                                @Field("HID") String HID,
                                @Field("GroupName") String GroupName,
                                @Field("GroupCode") String GroupCode,
                                @Field("ProductorName") String ProductName,
                                @Field("ProductCode") String ProductCode,
                                @Field("DefectDes") String DefectDes,
                                @Field("DefectNum") String DefectNum);

    //根据当前登录人获取生产组别
    @GET("/QAHandler.ashx?opType=getGroupByLogin")
    Observable<DefaultGroupBean> getDefaultGroup(@Query("loginName") String loginName);

    /**
     * 缝制抽检 ************************************************************************************
     */

    //获取缝制抽检表头信息
    @GET("/QAHandler.ashx?opType=getSewSpotHead")
    Observable<SelectBean> getSelect(@Query("LoginName") String LoginName,
                                     @Query("ProductInfo") String ProductInfo,
                                     @Query("InspectorInfo") String InspectorInfo,
                                     @Query("PageIndex") int PageIndex,
                                     @Query("PageCount") int PageCount);

    //获取缝制抽检明细信息
    @GET("/QAHandler.ashx?opType=getSewSpotDetail")
    Observable<SelectDetailBean> getSelectDetail(@Query("ID") String ID);

    //根据流转单号获取流转单信息
    @GET("/QAHandler.ashx?opType=getSpotInfoByFlowingCode")
    Observable<SelectFlowingBean> getSelectFlowing(@Query("FlowingCode") String FlowingCode,
                                                   @Query("InspectorCode") String InspectorCode,
                                                   @Query("LoginName") String LoginName);

    //保存缝制抽检表头
    @FormUrlEncoded
    @POST("/QAHandler.ashx?opType=saveSewSpotHead")
    Observable<BaseBean> updateSelect(@Query("LoginName") String LoginName,
                                      @Query("UserName") String UserName,
                                      @Field("Guid") String Guid,
                                      @Field("ID") String ID,
                                      @Field("TeamType") String team,
                                      @Field("IsReCheck") int reCheck,
                                      @Field("FlowingCode") String flowingCode,
                                      @Field("cInvName") String cInvName,
                                      @Field("cInvCode") String cInvCode,
                                      @Field("PackQty") String PackQty,
                                      @Field("ComNum") String ComNum,
                                      @Field("Check_FZ") String percent,
                                      @Field("CheckNum") String checkNum,
                                      @Field("FacArea") String area,
                                      @Field("GroupName") String groupName,
                                      @Field("GroupCode") String groupCode,
                                      @Field("InspectorName") String inspectorName,
                                      @Field("InspectorCode") String inspectorCode,
                                      @Field("InspectTime") String inspectorTime,
                                      @Field("Result") String result,
                                      @Field("Remark") String mark);

    //根据当前登录人代码获取与当前登录人同组的检验员(切换单检、组检时使用，新增时默认为组检)
    @GET("/QAHandler.ashx?opType=getSpotInspectorByGroup")
    Observable<InspectorBean> getSelectInspector(@Query("loginName") String loginName,
                                                 @Query("TeamType") String TeamType);

    //抽检明细中检验员数据源
    @GET("/QAHandler.ashx?opType=getSpotInspector")
    Observable<SelectInspectorBean> getSelectDetailInspector(@Query("HID") String HID);

    //获取缝制全检疵点(抽检)
    @GET("/QAHandler.ashx?opType=getAllInsDefect")
    Observable<SelectDefectBean> getSelectDefect(@Query("Guid") String Guid,
                                                 @Query("InsType") String InsType);

    //保存缝制抽检明细
    @FormUrlEncoded
    @POST("/QAHandler.ashx?opType=saveSewSpotDetail")
    Observable<BaseBean> update(@Field("LoginName") String LoginName,
                                @Field("UserName") String UserName,
                                @Field("Guid") String Guid,
                                @Field("DID") String DID,
                                @Field("HID") String HID,
                                @Field("ProductorName") String ProductName,
                                @Field("ProductCode") String ProductCode,
                                @Field("DefectDes") String DefectDes,
                                @Field("DefectNum") String DefectNum);

    //删除缝制抽检表头
    @FormUrlEncoded
    @POST("/QAHandler.ashx?opType=deleteSewSpotHead")
    Observable<BaseBean> select_delete(@Field("UserName") String UserName,
                                       @Field("Guid") String Guid);

    //删除缝制抽检明细
    @FormUrlEncoded
    @POST("/QAHandler.ashx?opType=deleteSewSpotDetail")
    Observable<BaseBean> select_deletes(@Field("UserName") String UserName,
                                        @Field("Guid") String Guid);

    /**
     * 绗缝巡检**************************************************************************************
     */

    //绗缝巡检表头
    @GET("/QAHandler.ashx?opType=getQuiltInsHead")
    Observable<HangBean> getHang(@Query("LoginName") String LoginName,
                                 @Query("ProductInfo") String ProductInfo,
                                 @Query("InspectorInfo") String InspectorInfo,
                                 @Query("PageIndex") int PageIndex,
                                 @Query("PageCount") int PageCount);

    //根据登录名获取当前用户信息
    @GET("/QAHandler.ashx?opType=getLoginUser")
    Observable<HangUpdateLoginBean> getLoginUser(@Query("loginName") String loginName);

    //获取成品名称
    @GET("/QAHandler.ashx?opType=getAllProductInfo")
    Observable<ProductInfoBean> getAllProductInfo(@Query("InsType") String InsType);

    //保存绗缝内检数据
    @FormUrlEncoded
    @POST("/QAHandler.ashx?opType=saveQuiltHead")
    Observable<BaseBean> update_hang(@Field("LoginName") String LoginName,
                                     @Field("UserName") String UserName,
                                     @Field("Guid") String Guid,
                                     @Field("ID") String ID,
                                     @Field("cInvName") String cInvName,
                                     @Field("PackQty") String PackQty,
                                     @Field("InspectorName") String InspectorName,
                                     @Field("InspectorCode") String InspectorCode,
                                     @Field("InspectTime") String InspectTime,
                                     @Field("FacArea") String FacArea,
                                     @Field("DefectNum") String DefectNum,
                                     @Field("DefectDes") String DefectDes,
                                     @Field("Remark") String Remark);

    //删除绗缝内检数据
    @FormUrlEncoded
    @POST("/QAHandler.ashx?opType=deleteQuiltHead")
    Observable<BaseBean> hang_delete(@Field("UserName") String UserName,
                                     @Field("Guid") String Guid);

    /**
     * 裁剪巡检**************************************************************************************
     */

    //裁剪内检表头
    @GET("/QAHandler.ashx?opType=getCutInsHead")
    Observable<ChaiBean> get_chai(@Query("LoginName") String LoginName,
                                  @Query("ProductInfo") String ProductInfo,
                                  @Query("InspectorInfo") String InspectorInfo,
                                  @Query("PageIndex") int PageIndex,
                                  @Query("PageCount") int PageCount);

    //保存裁剪内检数据
    @FormUrlEncoded
    @POST("/QAHandler.ashx?opType=saveCutHead")
    Observable<BaseBean> update_chai(@Field("LoginName") String LoginName,
                                     @Field("UserName") String UserName,
                                     @Field("Guid") String Guid,
                                     @Field("ID") String ID,
                                     @Field("cInvName") String cInvName,
                                     @Field("Color") String color,
                                     @Field("PackQty") String PackQty,
                                     @Field("InspectorName") String InspectorName,
                                     @Field("InspectorCode") String InspectorCode,
                                     @Field("InspectTime") String InspectTime,
                                     @Field("FacArea") String FacArea,
                                     @Field("DefectNum") String DefectNum,
                                     @Field("DefectDes") String DefectDes,
                                     @Field("Remark") String Remark);

    //删除绗缝内检数据
    @FormUrlEncoded
    @POST("/QAHandler.ashx?opType=deleteCutHead")
    Observable<BaseBean> delete_chai(@Field("UserName") String UserName,
                                     @Field("Guid") String Guid);

    //删除绗缝内检数据
    @GET("/QAHandler.ashx?opType=getAllColorByPro")
    Observable<ColorBean> getColor(@Query("cInvName") String cInvName);

    /**
     * 包装巡检**************************************************************************************
     */

    //包装巡检表头
    @GET("/QAHandler.ashx?opType=getPackHead")
    Observable<PackBean> get_pack(@Query("LoginName") String LoginName,
                                  @Query("ProductInfo") String ProductInfo,
                                  @Query("InspectorInfo") String InspectorInfo,
                                  @Query("PageIndex") int PageIndex,
                                  @Query("PageCount") int PageCount);

    //根据流转单获取流转单信息
    @GET("/QAHandler.ashx?opType=getPackInfoByFlowingCode")
    Observable<PackInfoBean> getPackInfo(@Query("FlowingCode") String FlowingCode,
                                         @Query("LoginName") String LoginName);

    /**
     * 保存包装巡检数据
     */
    @FormUrlEncoded
    @POST("/QAHandler.ashx?opType=savePackHead")
    Observable<BaseBean> updatePack(@Field("LoginName") String LoginName,
                                    @Field("UserName") String UserName,
                                    @Field("Guid") String Guid,
                                    @Field("ID") String ID,
                                    @Field("cInvName") String cInvName,
                                    @Field("cInvCode") String cInvCode,
                                    @Field("Color") String Color,
                                    @Field("PackQty") String PackQty,
                                    @Field("Check_BZ") String Check_BZ,
                                    @Field("CheckNum") String CheckNum,
                                    @Field("FlowingCode") String FlowingCode,
                                    @Field("Remark") String Remark,
                                    @Field("Result") String Result,
                                    @Field("InspectorName") String InspectorName,
                                    @Field("InspectorCode") String InspectorCode,
                                    @Field("InspectTime") String InspectTime,
                                    @Field("FacArea") String FacArea,
                                    @Field("DefectNum") String DefectNum,
                                    @Field("DefectDes") String DefectDes,
                                    @Field("IsReCheck") int IsReCheck);

    //删除包装巡检数据
    @FormUrlEncoded
    @POST("/QAHandler.ashx?opType=deletePackHead")
    Observable<BaseBean> deletePack(@Field("UserName") String UserName,
                                    @Field("Guid") String Guid);

    //获取厂区通用
    @GET("/QAHandler.ashx?opType=getAllArea")
    Observable<AllAreaBean> getAllArea();
}